package com.itheima.config;

import com.aliyun.oss.OSS;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

@Slf4j
@Component
public class OssClient {
    @Resource
    OSS ossBean;
    @Resource
    AliyunOssConfig ossConfig;

    /**
     * 阿里云上传图片方法
     */
    public String upload(MultipartFile file) {
        // 获取实际上传文件名
        log.info("实际上传的文件名:{}", file.getOriginalFilename());
        String name = file.getOriginalFilename();
        // 根据实际文件名获取文件后缀名
        int i = name.lastIndexOf(".");
        String suffix = name.substring(i);
        log.info("文件后缀:{}", suffix);
        // 根据文件后缀和生成的UUID拼接成完整的且不重复的文件名
        String uuid = java.util.UUID.randomUUID().toString();
        // 填写Object完整路径，完整路径中不能包含Bucket名称，例如exampledir/exampleobject.txt。
        String objectName = uuid+suffix;
        log.info("文件名:{}", objectName);
        try {
            ossBean.putObject(ossConfig.getBucketName(), objectName, file.getInputStream());
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return ossConfig.getUrl() + objectName;
    }
}
